#!/bin/bash

# 部署脚本 - 用于部署前后端到nginx反向代理

# 配置变量
PROJECT_DIR="/path/to/openmonitor"  # 项目根目录
NGINX_CONFIG="/etc/nginx/sites-available/openmonitor"  # nginx配置文件路径
DIST_DIR="$PROJECT_DIR/web/dist"  # 前端构建产物目录
BACKEND_DIR="$PROJECT_DIR/backend"  # 后端目录
BACKEND_PID_FILE="/var/run/openmonitor-backend.pid"  # 后端进程ID文件
LOG_DIR="/var/log/openmonitor"  # 日志目录

# 创建日志目录
mkdir -p $LOG_DIR

echo "=== 开始部署金融监控系统 ==="

# 1. 构建前端
echo "1. 构建前端代码..."
cd $PROJECT_DIR/web
npm run build:nginx
if [ $? -ne 0 ]; then
    echo "前端构建失败！"
    exit 1
fi
echo "前端构建成功！"

# 2. 检查后端是否运行
echo "2. 检查后端服务状态..."
if [ -f $BACKEND_PID_FILE ]; then
    BACKEND_PID=$(cat $BACKEND_PID_FILE)
    if ps -p $BACKEND_PID > /dev/null; then
        echo "后端服务正在运行 (PID: $BACKEND_PID)，停止服务..."
        kill $BACKEND_PID
        sleep 3
    fi
fi

# 3. 启动后端服务
echo "3. 启动后端服务..."
cd $BACKEND_DIR
nohup python -m uvicorn app.main:app --host 0.0.0.0 --port 10001 > $LOG_DIR/backend.log 2>&1 &
echo $! > $BACKEND_PID_FILE
echo "后端服务已启动，PID: $(cat $BACKEND_PID_FILE)"

# 4. 更新nginx配置
echo "4. 更新nginx配置..."
# 复制nginx配置文件（根据实际情况修改路径）
cp $PROJECT_DIR/nginx-deploy.conf $NGINX_CONFIG
# 更新配置中的路径
sed -i "s|/path/to/openmonitor/web/dist|$DIST_DIR|g" $NGINX_CONFIG

# 5. 测试nginx配置并重启
echo "5. 测试nginx配置..."
nginx -t
if [ $? -eq 0 ]; then
    echo "nginx配置测试通过，重启nginx..."
    systemctl reload nginx
    echo "nginx已重启"
else
    echo "nginx配置测试失败，请检查配置！"
    exit 1
fi

echo "=== 部署完成 ==="
echo "前端访问地址: http://www.bytech.top:8081/monitor"
echo "后端API地址: http://www.bytech.top:8081/api"
echo "后端日志: $LOG_DIR/backend.log"